#include "ThreadCache.h"

// 申请对象空间
void* ThreadCache::Allocate(size_t bytes)
{
  assert(size <= MAX_BYTES);
  size_t index = SizeClass::Index(bytes);
  size_t alignBytes = SizeClass::RoundUp(bytes);
  if(!_freeLists[index].Empty())
  {
    return _freeLists[index].Pop();
  }
  else 
  {
    return FetchFromCentralCache(index, alignBytes);
  }
}

// 释放对象空间
void ThreadCache::Deallocate(void* ptr, size_t bytes)
{
  assert(ptr);
  assert(size <= MAX_BYTES);
  size_t index = SizeClass::Index(bytes);
  _freeLists[index].Push(ptr);
}

// 从中心缓存获取对象（涉及到中心缓存，暂时先空着）
void* ThreadCache::FetchFromCentralCache(size_t index, size_t alignBytes)
{
  //...
  return nullptr;
}


